//总结,静态方法中没有this关键字,静态方法中,只能访问静态,非静态方法可以访问所有
class Student{
	String name;//实例变量
	int age;//实例变量
	static String teacherName;//静态变量
	public void show1(){//实例方法
		System.out.println(name + "," + age + "," + teacherName);
		show2();
		method();
	}
	public void show2(){//实例方法
		System.out.println(name + "," + age + "," + teacherName);
	}
	
	/*实例方法和对象相关,隐藏了关键字this
	  this:表示当前方法调用者的地址值
	  这个this:是由虚拟机赋值的
		public void show1(Student this){
		System.out.prinln(this.name + "," + this.age + "," + teacherName);
		this.show2();
		method();
		public void show2(Student this){
		System.out.prinln(this.name + "," + this.age + "," + teacherName);
	  所以打印的就是this里的name,this里的age,
	  (teacherName和method()的前面既可以有this也可以没有this,因为他是静态变量,既可以创建对象赋值也可以类名调用直接赋值)
	  因为这里局部位置的变量和成员变量没有发生冲突,所以this可以省略
	}*/
	
	public static void method(){//静态方法     静态方法与对象无关,是共享的,里面没有this关键字
		System.out.println("静态方法");
		
		//静态方法只能访问静态
		//错误示范1:System.out.println(name);
		//错误示范2:show1();
		//上面错了是因为这个name不知道是哪个对象里的name,所以不知道打印什么,那么加this?静态方法里没有this,故而静态方法不能调用实例变量
		
	}
}
public class A44{
	public static void main(String[] args){
		Student s1 = new Student();
		s1.name = "zhangsan";
		s1.age = 23;
		//s1.teacherName = "小吴老师";    //
		Student.teacherName = "小吴老师";
		
		s1.show1();//这里是s1调用show1方法,所以show1方法里的this就是s1地址
		//打印结果为:
		//zhangsan,23,小吴老师
		//zhangsan,23,小吴老师
		System.out.println("----------------------------");
		
		Student s2 = new Student();
		s2.name = "lisi";
		s2.age = 24;
		//静态变量不用重新赋值
		//s1.teacherName = "小吴老师";   
		//Student.teacherName = "小吴老师";
		s2.show1();//这里是s2调用show1方法,所以show1方法里的this就是s2地址
		//打印结果为:
		//lisi,24,小吴老师
		//lisi,24,小吴老师
	}
}